import java.util.Arrays;
import java.util.Scanner;

public class Test {
    public static void main1(String[] args) {
        int a;
       Scanner scanner = new Scanner(System.in);
        a = scanner.nextInt();

        System.out.println(a);

        //当使用next的时候，读到空格就结束了
        String name = scanner.next();
        System.out.println(name);
    }

    public static void main2(String[] args) {
        //nextLine()是读一行
        Scanner scan = new Scanner(System.in);
        String name = scan.nextLine();

        System.out.println(name);
    }
    //结论：当输入的数据有很多不同数据的时候，优先去处理字符串的输入

    public static void main3(String[] args) {
        Scanner scan = new Scanner(System.in);
        while(scan.hasNextInt()) {

         int m = scan.nextInt();
            System.out.println(m);
        }
    }

    //java中的函数叫方法

    public static int add(int a, int b) {

        return a + b;
    }

    public static void main4(String[] args) {

        int x = 1;
        int y = 2;
        int ret = add(x, y);
        System.out.println(ret);

        //Java不能获得栈上的地址，没有取地址的说法
    }

    public static void main5(String[] args) {

        //这两种没有本质区别，只是写法上的区别
        int[] array1 = {1, 2, 3};
        int[] array2 = new int[]{1, 2, 3, 4};

        int[] array3 = new int[10];//只是分配了内存，但是没有初始化，只有默认值3

        //遍历数组 - 方法一
        for (int i = 0; i < array2.length; i++) {
            System.out.println(array2[i]);
        }

        //遍历数组 - 法二
        for(int e : array2) {
            System.out.println(e);
        }

        //遍历数组 - 方法三 (返回指定数组的字符串形式，把数组转变为字符串，然后返回)
        String ret = Arrays.toString(array2);
        System.out.println(ret);
    }

    public static void main(String[] args) {
        //Java数组是引用类型 - 数组是开在堆上的

        int[] array1 = new int[]{1, 2, 3, 4};
        int[] array2 = array1;//array2这个引用，指向了array2这个引用所引用的对象
        array2[1] = 99;

        System.out.println(Arrays.toString(array1));
        System.out.println(Arrays.toString(array2));
        //打印出来的不是一个真实的地址，而是地址经过哈希得到的

        System.out.println(array1);
        System.out.println(array2);

        int[] array = null;//引用类型的0值
        //array.length - 空指针异常

        System.out.println(array.length);

        //引用对象在函数里面叫局部变量，函数结束局部变量里面存储的值就会被回收掉
        //数组是对象
    }
}
